package com.ruoyi.safe.service;

import com.ruoyi.safe.domain.BizSafeInfor;
import com.ruoyi.safe.domain.dto.BizSafeInfoCoverAttachDTO;
import com.ruoyi.safe.domain.dto.BizSafeInforAppendAttachDTO;
import com.ruoyi.safe.domain.dto.BizSafeInforFileListDTO;
import com.ruoyi.safe.domain.dto.BizSafeInforRelateCatalogDTO;
import com.ruoyi.safe.domain.vo.BizSafeDocAttachVO;
import com.ruoyi.safe.domain.vo.SafeInforStatisticVo;

import java.util.List;

/**
 * 安全内业资料Service接口
 * 
 * @author ruoyi
 * @date 2024-01-10
 */
public interface IBizSafeInforService
{
    /**
     * 查询安全内业资料
     * 
     * @param id 安全内业资料主键
     * @return 安全内业资料
     */
    BizSafeInfor selectBizSafeInforById(Long id);

    /**
     * 查询安全内业资料列表
     * 
     * @param bizSafeInfor 安全内业资料
     * @return 安全内业资料集合
     */
    List<BizSafeInfor> selectBizSafeInforList(BizSafeInfor bizSafeInfor);

    /**
     * 新增安全内业资料
     * 
     * @param bizSafeInfor 安全内业资料
     * @return 结果
     */
    int insertBizSafeInfor(BizSafeInfor bizSafeInfor);

    /**
     * 修改安全内业资料
     * 
     * @param bizSafeInfor 安全内业资料
     * @return 结果
     */
    int updateBizSafeInfor(BizSafeInfor bizSafeInfor);

    /**
     * 批量删除安全内业资料
     * 
     * @param ids 需要删除的安全内业资料主键集合
     * @return 结果
     */
    int deleteBizSafeInforByIds(Long[] ids);

    /**
     * 删除安全内业资料信息
     * 
     * @param id 安全内业资料主键
     * @return 结果
     */
    int deleteBizSafeInforById(Long id);

    /**
     * 根据项目ID查询列表
     * @param projectId
     * @return
     */
    List<BizSafeInfor> selectListByProjectId(Long projectId);
    /**
     * 创建下级
     * @param parentId
     * @param bizSafeInfor
     * @return
     */
    int createJunior(Long parentId,BizSafeInfor bizSafeInfor);

    /**
     * 为项目关联内业资料目录模板
     * @param bizSafeInforRelateCatalogDTO
     * @return
     */
    int relateCatalog(BizSafeInforRelateCatalogDTO bizSafeInforRelateCatalogDTO);

    /**
     * 项目下各个一级目录下的安全内业资料上传的统计情况
     * @param projectId
     * @return
     */
    List<SafeInforStatisticVo> firstLevelSafeInforStatistics(Long projectId);

    /**
     * 项目下整个安全内业资料上传的统计情况
     * @param projectId
     * @return
     */
    SafeInforStatisticVo safeInforStatistics(Long projectId);

    /**
     * 查询安全内业资料目录的资料完成情况
     * @param projectId 项目Id
     * @return 安全内业资料集合
     */
    List<BizSafeInfor> performance(Long projectId);

    /**
     * 关联附件
     * @param bizSafeInforAppendAttachDTO
     * @return
     */
    int relateAttaches(BizSafeInforAppendAttachDTO bizSafeInforAppendAttachDTO);

    /**
     * 追加附件
     * @param bizSafeInforAppendAttachDTO
     * @return
     */
    int appendAttaches(BizSafeInforAppendAttachDTO bizSafeInforAppendAttachDTO);

    /**
     * 覆盖附件
     * @param bizSafeInfoCoverAttachDTO
     * @return
     */
    int coverAttache(BizSafeInfoCoverAttachDTO bizSafeInfoCoverAttachDTO);

    /**
     * 安全内业资料文件列表
     * @param bizSafeInforFileListDTO
     * @return
     */
    List<BizSafeDocAttachVO> selectFileList(BizSafeInforFileListDTO bizSafeInforFileListDTO);
}
